package com.yifan.linear.Linkedlist;

/**
 * @Author YIFan
 * @Date 2020/6/12 11:21
 * @Version 1.0
 */
// 环形双向链表
public class CircleDoubleNode {
    // 只创建一个节点的话 上一个 ,下一个节点都是他自己
    // 上一个节点
    private CircleDoubleNode per = this;
    // 下一个节点
    private CircleDoubleNode next = this;
    // 节点的数据
    private int data ;

    public CircleDoubleNode(int data){
        this.data = data;
    }

    //增加节点
    public void after(CircleDoubleNode node){
        // 原来的下一个节点
        CircleDoubleNode nextNext = this.next;
        // 把新节点当作当前节点的下一个节点
        this.next = node;
        // 把当前节点当作新节点的前一个节点
        node.per = this;
        // 让原来的下一个节点当作新节点的下一个节点
        node.next = nextNext;
        // 让原来的下一个节点的上一个节点为新节点
        nextNext.per = node;
    }

    //下一个节点
    public CircleDoubleNode next(){
        return this.next;
    }

    //上一个节点
    public CircleDoubleNode previous(){
        return this.per;
    }

    //获取数据
    public int getData(){
        return this.data;
    }


}
